package com.sc.nft.feign;

import com.sc.nft.dto.IdRequest;
import com.sc.nft.req.activity.ThemeActivityGoodsReq;
import com.sc.nft.req.activity.ThemeActivityListReq;
import com.sc.nft.req.activity.ThemeActivityPageReq;
import com.sc.nft.req.activity.ThemeActivityReq;
import com.sc.nft.req.question.WxMiniQuestionPageReq;
import com.sc.nft.req.question.WxMiniQuestionReq;
import com.sc.nft.sup.PageResult;
import com.sc.nft.sup.Result;
import com.sc.nft.vo.activity.*;
import com.sc.nft.vo.question.QuestionDetailsVO;
import com.sc.nft.vo.question.QuestionPageVO;
import com.sc.nft.vo.question.QuestionWebTypeVO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

import java.util.List;


/**
 * @author JYT
 * @create 2024/4/27 11:29
 */
@FeignClient(name = "meta-mall-mini-app", path = "/wxMiniMall/activity")
public interface WxMiniThemeActivityClient {
    /**
     * 创建主题活动
     *
     * @param request
     * @return
     */
    @PostMapping(value = "/create", produces = MediaType.APPLICATION_JSON_VALUE)
    Result createThemeActivity(ThemeActivityReq request);

    /**
     * 编辑主题活动
     *
     * @param request
     * @return
     */
    @PostMapping(value = "/update", produces = MediaType.APPLICATION_JSON_VALUE)
    Result updateThemeActivity(ThemeActivityReq request);


    /**
     * 主题活动详情
     *
     * @param idRequest
     * @return
     */
    @PostMapping(value = "/details", produces = MediaType.APPLICATION_JSON_VALUE)
    Result<ThemeDetailsVO> details(IdRequest idRequest);

    /**
     * 主题活动详情
     *
     * @param request
     * @return
     */
    @PostMapping(value = "/goodsDetails", produces = MediaType.APPLICATION_JSON_VALUE)
    Result<List<ThemeItemDetailsVO>> goodsDetails(ThemeActivityGoodsReq request);

    /**
     * 主题活动列表
     *
     * @param request
     * @return
     */
    @PostMapping(value = "/admin/page", produces = MediaType.APPLICATION_JSON_VALUE)
    PageResult<ThemeActivityPageVO> adminPage(ThemeActivityPageReq request);


    /**
     * 主题活动详情
     *
     * @param idRequest
     * @return
     */
    @PostMapping(value = "/get", produces = MediaType.APPLICATION_JSON_VALUE)
    Result<ThemeWebVO> webGet(IdRequest idRequest);

    /**
     * 主题活动商品
     *
     * @param request
     * @return
     */
    @PostMapping(value = "/getGoods", produces = MediaType.APPLICATION_JSON_VALUE)
    PageResult<ThemeItemWebVO> webGetGoods(ThemeActivityGoodsReq request);

    /**
     * 选择主题活动
     * @param request
     * @return
     */
    @PostMapping(value = "/admin/list", produces = MediaType.APPLICATION_JSON_VALUE)
    Result<List<ThemeActivityPageVO>> adminList(ThemeActivityListReq request);

    @PostMapping(value = "/remove", produces = MediaType.APPLICATION_JSON_VALUE)
    Result remove(IdRequest request);
}
